package com.chinasofti.thread01;

import java.util.concurrent.ArrayBlockingQueue;

/*
消费者类: Foodie 实现 Runnable 接口，重写 run 方法，
1.判断是否有包子，决定当前线程是否执行
2如果没有包子，就进入等待状态，如果有包子就消费包子
 3.消费包子之后，更新桌子上包子状态，唤醒生产者者做包子
 */
public class Foodie extends Thread{

    private Desk desk;

    public Foodie(Desk desk){
        this.desk = desk;
    }

    @Override
    public void run() {
        while (true){
            synchronized (desk.getLock()){
                if(desk.getCount() == 0){
                    break;
                }else {
                    if(desk.isFlag()){
                        //有
                        System.out.println("吃货在吃包子");
                        desk.setFlag(false);
                        desk.getLock().notifyAll();
                        desk.setCount(desk.getCount() - 1);
                    }else {
                        //没有
                        try {
                            desk.getLock().wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }
        }
    }
}